export const getUrlParamsByName = (url = location.search, name) => {
  /**
   * 获取url指定参数的值
   * \b 边界
   * ?<= 向后匹配
   * 字符串转成正则表达式，其中的'\b'类型的特殊字符要多加一个'\'
   */

  let reg = new RegExp(`(?<=\\b${name}=)[^&]*`),
    str = url || '',
    target = str.match(reg)
  if (target) {
    return target[0]
  }
  return
}

export const getUrlParams = (url = location.search) => {
  /**
   * 获取当前 URL 所有 GET 查询参数
   * 入参：要解析的 URL，不传则默认为当前 URL
   * 返回：一个<key, value>参数对象
   *
   * ([^?&]+) 匹配非? 及 &开头的非空字符串
   * (?==)    非获取匹配=，正向肯定预查，以便获取不带等号结尾的 key 值
   * ([^&]*)  匹配非? 及 &结尾的字符串（包含空字符串情况，因为有的 value 值会为空）
   * (?<==)   非获取匹配=，反向肯定预查，以便获取不带等号开头的 value 值
   */
  const params = {}
  const reg = /([^&?]*)=([^&]*)/g
  const res = url.match(reg)
  for (const key in res) {
    const query = res[key].split('=')
    params[query[0]] = query[1]
  }
  return params
}
